/*
 * File Name：FileUtils.java
 * Copyright：Copyright 2012-2012 Huawei Tech. Co. Ltd. All Rights Reserved.
 * Description： FileUtils.java
 * Modify By：PLA-ZJLIU
 * Modify Date：2012-11-3
 * Modify Type：Add
 */
package com.ciwong.ciwongwrite.utils;

import com.ciwong.mobilelib.utils.BaseSystem;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * 文件辅助类<br />
 * 包括文件的加密解密压缩
 *
 * @author PLA-ZJLIU
 * @version ciwong v.1.0 2012-11-3
 * @since ciwong v.1.0
 */
public class FileUtils
{

    public static final String NEW_LINE = System.getProperty("line.separator");

//    public static  String logPath = BaseSystem.getProjectFolderPath();

    /**
     * 将文本内容存储至指定的文件
     *
     * @param content
     *            文本内容
     * @param path
     *            文件路径
     */
    public static void save(String content, String path)
    {
        try
        {
            FileOutputStream out = new FileOutputStream(new File(path));
            out.write(content.getBytes(CWConstants.UTF_8));
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }

    /**
     * 复制文件
     *
     * @param in
     *            拷贝文件流
     * @param path
     *            保存路径
     */
    public static void copy(InputStream in, String path, boolean isCover)
    {
        try
        {
            File outFile = new File(path);
            if (!outFile.exists() || isCover)
            {
                FileOutputStream out = new FileOutputStream(outFile);
                int len;
                byte[] buffer = new byte[1024];
                while ((len = in.read(buffer)) > 0)
                {
                    out.write(buffer, 0, len);
                }
                out.flush();
                out.close();
                in.close();
            }
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }

    /**
     * 复制文件
     *
     * @param file
     *            要拷贝的文件
     * @param path
     *            保存路径
     */
    public static void copy(File file, String path, boolean isCover)
    {
        if (file.isDirectory())
        {
            if (!file.exists())
            {
                file.mkdirs();
            }
            File[] files = file.listFiles();
            for (File f : files)
            {
                copy(f, path + "/" + f.getName(), isCover);
            }
        }
        else
        {
            if (!file.exists() || isCover)
            {
                try
                {
                    FileOutputStream out = new FileOutputStream(new File(path));
                    InputStream in = new FileInputStream(file);
                    int len;
                    byte[] buffer = new byte[1024];
                    while ((len = in.read(buffer)) > 0)
                    {
                        out.write(buffer, 0, len);
                    }
                    out.flush();
                    out.close();
                    in.close();
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
        }
    }

    /**
     * 获取文件的后缀
     *
     * @param fileName
     *            文件名称
     * @return 文件的后缀
     */
    public static String getMimeType(String fileName)
    {
        fileName = fileName.substring(fileName.lastIndexOf(".") + 1);
        return fileName;
    }

    /**
     * 将文本内容存储至指定的文件
     *
     * @param content
     *            文本内容
     * @param path
     *            文件路径
     */
    public static void save(String content, String path, boolean append)
    {
        try
        {
            FileOutputStream out = new FileOutputStream(new File(path), append);
            out.write(content.getBytes(CWConstants.UTF_8));
            out.close();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }

    /**
     * 保存信息
     *
     * @param content
     *            文本内容
     */
//    public static void logInfo(String content)
//    {
//        File f = new File(logPath + "/log");
//        if (!f.exists())
//        {
//            return;
//        }
//        content = "------------------------Info:"
//                + CWUtils.formatDate1(System.currentTimeMillis())
//                + "------------------------" + NEW_LINE + content + NEW_LINE;
//        save(content,
//                f.getAbsolutePath() + "/"
//                        + CWUtils.formatDay(System.currentTimeMillis())
//                        + ".log", true);
//    }
//


    /**
     * 保存信息
     *
     * @param content
     *            文本内容
     */
//    public static void logWarning(String content)
//    {
//        File f = new File(logPath + "/log");
//        if (!f.exists())
//        {
//            return;
//        }
//        content = "------------------------Warning:"
//                + CWUtils.formatDate1(System.currentTimeMillis())
//                + "------------------------" + NEW_LINE + content + NEW_LINE;
//        save(content,
//                f.getAbsolutePath() + "/"
//                        + CWUtils.formatDay(System.currentTimeMillis())
//                        + ".log", true);
//    }

    /**
     * 保存信息
     *
     * @param content
     *            文本内容
     */
//    public static void logError(String content)
//    {
//        File f = new File(logPath + "/log");
//        if (!f.exists())
//        {
//            return;
//        }
//        content = "------------------------Error:"
//                + CWUtils.formatDate1(System.currentTimeMillis())
//                + "------------------------" + NEW_LINE + content + NEW_LINE;
//        save(content,
//                f.getAbsolutePath() + "/"
//                        + CWUtils.formatDay(System.currentTimeMillis())
//                        + ".log", true);
//    }
}
